function changeCheckboxState(checkbox){
	if($(checkbox).is(':checked')){
		$(checkbox).removeAttr('checked');
	}else{
		$(checkbox).attr('checked','checked');
	}
}

function ajaxValidator(elem,url){
	if($(elem).val()=='')return;
	var submit = $(':submit',$(elem).parents('form'));
	var submitDiv = submit.parent().parent();
	$.ajax({
		type:'GET',
		url:url,
		cache:false,
		data:{code:$(elem).val()},
		success:function(data){
			if(data=='0'){
				$(elem).parent().append('<span class="error">代码已被占用!</span>');
				
				submit.attr('disabled','disabled');
				submitDiv.removeClass('button').addClass('buttonDisabled');
			}else{
				$('span.error',$(elem).parent()).remove();
				submit.removeAttr('disabled');
				submitDiv.removeClass('buttonDisabled').addClass('button');
			}
		}
	});
}
//当前表格中这一列中元素的值唯一
function tableLineUniqueValidator(elem){
	if($.trim($(elem).val())=='')return;
	
	var $elem = $(elem);
	var $td=$elem.parents('td');
	var $tr = $elem.parents('tr');
	var name = $elem.attr('name');
	
	//找到当前元素在表格的哪一列
	var tdIndex = $('td',$tr).index($td);
	
	//遍历当前这一列元素
	doTableLineUniqueValidator(elem);
	$('tr',$elem.parents('tbody')).not($tr).each(function(){
		var temp = $('[name='+name+']',$('td:eq('+tdIndex+')',this));
		
		doTableLineUniqueValidator(temp);
	});	
}
function doTableLineUniqueValidator(elem){
	if($.trim($(elem).val())=='')return;
	
	var $elem = $(elem);
	var $td=$elem.parents('td');
	var $tr = $elem.parents('tr');
	var name = $elem.attr('name');
	var value = $elem.val();
	
	var submit = $(':submit',$(elem).parents('form'));
	var submitDiv = submit.parent().parent();
	
	//找到当前元素在表格的哪一列
	var tdIndex = $('td',$tr).index($td);
	
	//遍历当前这一列元素
	var exists = false;
	var hasValidate = false;
	$('tr',$elem.parents('tbody')).not($tr).each(function(){
		var temp = $('[name='+name+']',$('td:eq('+tdIndex+')',this));
		
		if(value == temp.val()){
			exists = true;			
			if($('span',temp.parents('td')).size()!=0){
				hasValidate = true;
			}
		}
	});
	
	if(hasValidate)return;
	
	//根据结果设置及移除错误信息
	if(exists){
		if($('span',$td).size()==0){
			$td.append('<span style="color:red;display:inline;">代码已被占用!</span>');
			submit.attr('disabled','disabled');
			submitDiv.removeClass('button').addClass('buttonDisabled');
		}
			
	}else{
		$('span',$td).remove();
		submit.removeAttr('disabled');
		submitDiv.removeClass('buttonDisabled').addClass('button');
	}
}

//表格操作
function addRow(sourceTableId,aimTableId){
	$('#'+sourceTableId+'>tbody>tr:last').clone().appendTo('#'+aimTableId+'>tbody');
}
function deleteRow(aimTableId){
	$('#'+aimTableId+'>tbody>tr').each(function(){
		if($(':checkbox:first',this).is(':checked')){
			$(this).remove();
		}
	});
}
/**
 *  表单中含表格，提交时重命名表格中的表单元素
 * 需要传入 namePettrn 命名格式
 * 命名格式中可以引用两个变量，index－表格中元素所在表格内容体中的行号 name－元素当前名称
 * index从0开始
 * +index+ 引用行号 +name+引用元素名称
 * 例如：传入如下命名格式：user.address[+index+].+name+ 则第一行中元素(name属性为city)，
 * 元素的name属性将被重命名为：user.address[0].city
 * @param namePattern
 */
function setFormFieldNameBeforeSubmit(table,namePattern){
	var changeName = function(index,name){			
		var newName = namePattern;
		newName=newName.replace(/\+index\+/,index);
		newName=newName.replace(/\+name\+/,name);			
		return newName;
	};		
	if(table!=null && $.trim(namePattern)!=''){
		$('tbody >tr',table).each(function(index){				
			$(':input,select,:radio',this).each(function(){
				if($(this).attr('name')){
					if(!$(this).attr('_bakName')){
						$(this).attr('_bakName',$(this).attr('name'));
					}else{
						$(this).attr('name',$(this).attr('_bakName'));
					}
					var newName = changeName(index,$(this).attr('name'));						
					
					$(this).attr('name',newName);
				}
			});				
		});
	}	
}


/**
 * 普通ajax表单提交
 * @param {Object} form
 * @param {Object} callback
 * @param {Object} before 校验完成后提交之前前进行的操作
 */
function customerAjaxSubmitForm(form,tableParams) {
	var $form = $(form);
	if (!$form.valid()) {
		return false;
	}
	
	if(tableParams!=null){
		for(var i=0;i<tableParams.length;i++){
			var table = $(tableParams[i].selector,form);
			setFormFieldNameBeforeSubmit(
					$(tableParams[i].selector,form).get(0),
					tableParams[i].namePattern
			);
		}
	}

	$.ajax({
		type: form.method || 'POST',
		url:$form.attr("action"),
		data:$form.serializeArray(),
		dataType:"json",
		cache: false,
		success: navTabAjaxDone || DWZ.ajaxDone,
		error: DWZ.ajaxError
	});
	return false;
}


function disableDivElement(divId){
	var div = $('#'+divId);
	if(div.size()==0)return;
	$('a.button,:input,:radio,:checkbox,:submit,:reset',div).not($('div.formBar button',div)).each(function(){
		$(this).attr('disabled','disabled');
		if($(this).is('a')){
			$(this).addClass('buttonDisabled');
			this.onclick=function(){return false;};
		}
	});
}